home *** CD-ROM | disk | FTP | other *** search
- package
- {
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageScaleMode;
- import flash.events.ContextMenuEvent;
- import flash.events.Event;
- import flash.events.KeyboardEvent;
- import flash.events.MouseEvent;
- import flash.events.TimerEvent;
- import flash.external.ExternalInterface;
- import flash.net.URLRequest;
- import flash.net.navigateToURL;
- import flash.system.Security;
- import flash.text.TextField;
- import flash.ui.ContextMenu;
- import flash.ui.ContextMenuItem;
- import flash.utils.Timer;
- import happyworm.jPlayer.*;
-
- public class Jplayer extends Sprite
- {
- private var jQuery:String;
-
- private var sentNumberFractionDigits:uint = 2;
-
- public var commonStatus:JplayerStatus = new JplayerStatus();
-
- private var myInitTimer:Timer = new Timer(100,0);
-
- private var myMp3Player:JplayerMp3;
-
- private var myMp4Player:JplayerMp4;
-
- private var isMp3:Boolean = false;
-
- private var isVideo:Boolean = false;
-
- private var txLog:TextField;
-
- private var debug:Boolean = false;
-
- public function Jplayer()
- {
- super();
- Security.allowDomain("*");
- this.jQuery = loaderInfo.parameters.jQuery + "(\'#" + loaderInfo.parameters.id + "\').jPlayer";
- this.commonStatus.volume = Number(loaderInfo.parameters.vol);
- this.commonStatus.muted = loaderInfo.parameters.muted == "true";
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- stage.addEventListener(Event.RESIZE,this.resizeHandler);
- stage.addEventListener(MouseEvent.CLICK,this.clickHandler);
- var _loc1_:Number = this.commonStatus.volume;
- if(this.commonStatus.muted)
- {
- _loc1_ = 0;
- }
- this.myMp3Player = new JplayerMp3(_loc1_);
- addChild(this.myMp3Player);
- this.myMp4Player = new JplayerMp4(_loc1_);
- addChild(this.myMp4Player);
- this.setupListeners(!this.isMp3,this.isMp3);
- var _loc2_:ContextMenu = new ContextMenu();
- _loc2_.hideBuiltInItems();
- var _loc3_:ContextMenuItem = new ContextMenuItem("jPlayer " + JplayerStatus.VERSION);
- var _loc4_:ContextMenuItem = new ContextMenuItem("© 2009-2011 Happyworm Ltd",true);
- _loc3_.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,this.menuSelectHandler_jPlayer);
- _loc4_.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,this.menuSelectHandler_happyworm);
- _loc2_.customItems.push(_loc3_,_loc4_);
- contextMenu = _loc2_;
- if(this.debug)
- {
- this.txLog = new TextField();
- this.txLog.x = 5;
- this.txLog.y = 5;
- this.txLog.width = 540;
- this.txLog.height = 390;
- this.txLog.border = true;
- this.txLog.background = true;
- this.txLog.backgroundColor = 15658751;
- this.txLog.multiline = true;
- this.txLog.text = "jPlayer " + JplayerStatus.VERSION;
- this.txLog.visible = false;
- this.addChild(this.txLog);
- this.stage.addEventListener(KeyboardEvent.KEY_UP,this.keyboardHandler);
- this.myMp3Player.addEventListener(JplayerEvent.DEBUG_MSG,this.debugMsgHandler);
- this.myMp4Player.addEventListener(JplayerEvent.DEBUG_MSG,this.debugMsgHandler);
- }
- this.myInitTimer.addEventListener(TimerEvent.TIMER,this.init);
- this.myInitTimer.start();
- }
-
- private function init(param1:TimerEvent) : void
- {
- this.myInitTimer.stop();
- if(ExternalInterface.available)
- {
- ExternalInterface.addCallback("fl_setAudio_mp3",this.fl_setAudio_mp3);
- ExternalInterface.addCallback("fl_setAudio_m4a",this.fl_setAudio_m4a);
- ExternalInterface.addCallback("fl_setVideo_m4v",this.fl_setVideo_m4v);
- ExternalInterface.addCallback("fl_clearMedia",this.fl_clearMedia);
- ExternalInterface.addCallback("fl_load",this.fl_load);
- ExternalInterface.addCallback("fl_play",this.fl_play);
- ExternalInterface.addCallback("fl_pause",this.fl_pause);
- ExternalInterface.addCallback("fl_play_head",this.fl_play_head);
- ExternalInterface.addCallback("fl_volume",this.fl_volume);
- ExternalInterface.addCallback("fl_mute",this.fl_mute);
- ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",JplayerEvent.JPLAYER_READY,this.extractStatusData(this.commonStatus));
- }
- }
-
- private function setupListeners(param1:Boolean, param2:Boolean) : void
- {
- if(param1 != param2)
- {
- if(param2)
- {
- this.listenToMp3(true);
- this.listenToMp4(false);
- }
- else
- {
- this.listenToMp3(false);
- this.listenToMp4(true);
- }
- }
- }
-
- private function listenToMp3(param1:Boolean) : void
- {
- if(param1)
- {
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
- this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
- }
- else
- {
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
- this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
- }
- }
-
- private function listenToMp4(param1:Boolean) : void
- {
- if(param1)
- {
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
- this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA,this.jPlayerMetaDataHandler);
- }
- else
- {
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
- this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA,this.jPlayerMetaDataHandler);
- }
- }
-
- private function fl_setAudio_mp3(param1:String) : Boolean
- {
- if(param1 != null)
- {
- this.log("fl_setAudio_mp3: " + param1);
- this.setupListeners(this.isMp3,true);
- this.isMp3 = true;
- this.isVideo = false;
- this.myMp4Player.clearFile();
- this.myMp3Player.setFile(param1);
- return true;
- }
- this.log("fl_setAudio_mp3: null");
- return false;
- }
-
- private function fl_setAudio_m4a(param1:String) : Boolean
- {
- if(param1 != null)
- {
- this.log("fl_setAudio_m4a: " + param1);
- this.setupListeners(this.isMp3,false);
- this.isMp3 = false;
- this.isVideo = false;
- this.myMp3Player.clearFile();
- this.myMp4Player.setFile(param1);
- return true;
- }
- this.log("fl_setAudio_m4a: null");
- return false;
- }
-
- private function fl_setVideo_m4v(param1:String) : Boolean
- {
- if(param1 != null)
- {
- this.log("fl_setVideo_m4v: " + param1);
- this.setupListeners(this.isMp3,false);
- this.isMp3 = false;
- this.isVideo = true;
- this.myMp3Player.clearFile();
- this.myMp4Player.setFile(param1);
- return true;
- }
- this.log("fl_setVideo_m4v: null");
- return false;
- }
-
- private function fl_clearMedia() : void
- {
- this.log("clearMedia.");
- this.myMp3Player.clearFile();
- this.myMp4Player.clearFile();
- }
-
- private function fl_load() : Boolean
- {
- this.log("load.");
- if(this.isMp3)
- {
- return this.myMp3Player.load();
- }
- return this.myMp4Player.load();
- }
-
- private function fl_play(param1:Number = NaN) : Boolean
- {
- this.log("play: time = " + param1);
- if(this.isMp3)
- {
- return this.myMp3Player.play(param1 * 1000);
- }
- return this.myMp4Player.play(param1 * 1000);
- }
-
- private function fl_pause(param1:Number = NaN) : Boolean
- {
- this.log("pause: time = " + param1);
- if(this.isMp3)
- {
- return this.myMp3Player.pause(param1 * 1000);
- }
- return this.myMp4Player.pause(param1 * 1000);
- }
-
- private function fl_play_head(param1:Number) : Boolean
- {
- this.log("play_head: " + param1 + "%");
- if(this.isMp3)
- {
- return this.myMp3Player.playHead(param1);
- }
- return this.myMp4Player.playHead(param1);
- }
-
- private function fl_volume(param1:Number) : void
- {
- this.log("volume: " + param1);
- this.commonStatus.volume = param1;
- if(!this.commonStatus.muted)
- {
- this.myMp3Player.setVolume(param1);
- this.myMp4Player.setVolume(param1);
- }
- }
-
- private function fl_mute(param1:Boolean) : void
- {
- this.log("mute: " + param1);
- this.commonStatus.muted = param1;
- if(param1)
- {
- this.myMp3Player.setVolume(0);
- this.myMp4Player.setVolume(0);
- }
- else
- {
- this.myMp3Player.setVolume(this.commonStatus.volume);
- this.myMp4Player.setVolume(this.commonStatus.volume);
- }
- }
-
- private function jPlayerFlashEvent(param1:JplayerEvent) : void
- {
- this.log("jPlayer Flash Event: " + param1.type + ": " + param1.target);
- if(ExternalInterface.available)
- {
- ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",param1.type,this.extractStatusData(param1.data));
- }
- }
-
- private function extractStatusData(param1:JplayerStatus) : Object
- {
- var _loc2_:Object = {
- "version":JplayerStatus.VERSION,
- "src":param1.src,
- "paused":!param1.isPlaying,
- "srcSet":param1.srcSet,
- "seekPercent":param1.seekPercent,
- "currentPercentRelative":param1.currentPercentRelative,
- "currentPercentAbsolute":param1.currentPercentAbsolute,
- "currentTime":param1.currentTime / 1000,
- "duration":param1.duration / 1000,
- "volume":this.commonStatus.volume,
- "muted":this.commonStatus.muted
- };
- this.log("extractStatusData: sp=" + _loc2_.seekPercent + " cpr=" + _loc2_.currentPercentRelative + " cpa=" + _loc2_.currentPercentAbsolute + " ct=" + _loc2_.currentTime + " d=" + _loc2_.duration);
- return _loc2_;
- }
-
- private function jPlayerMetaDataHandler(param1:JplayerEvent) : void
- {
- this.log("jPlayerMetaDataHandler:" + param1.target);
- if(ExternalInterface.available)
- {
- this.resizeHandler(new Event(Event.RESIZE));
- ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",param1.type,this.extractStatusData(param1.data));
- }
- }
-
- private function resizeHandler(param1:Event) : void
- {
- var _loc6_:Number = NaN;
- var _loc7_:Number = NaN;
- this.log("resizeHandler: stageWidth = " + stage.stageWidth + " | stageHeight = " + stage.stageHeight);
- var _loc2_:Number = 0;
- var _loc3_:Number = 0;
- var _loc4_:Number = 0;
- var _loc5_:Number = 0;
- if(stage.stageWidth > 0 && stage.stageHeight > 0 && this.myMp4Player.myVideo.width > 0 && this.myMp4Player.myVideo.height > 0)
- {
- _loc6_ = stage.stageWidth / stage.stageHeight;
- _loc7_ = this.myMp4Player.myVideo.width / this.myMp4Player.myVideo.height;
- if(_loc6_ < _loc7_)
- {
- _loc4_ = stage.stageWidth;
- _loc5_ = stage.stageWidth / _loc7_;
- _loc2_ = 0;
- _loc3_ = (stage.stageHeight - _loc5_) / 2;
- }
- else
- {
- _loc4_ = stage.stageHeight * _loc7_;
- _loc5_ = stage.stageHeight;
- _loc2_ = (stage.stageWidth - _loc4_) / 2;
- _loc3_ = 0;
- }
- this.resizeEntity(this.myMp4Player,_loc2_,_loc3_,_loc4_,_loc5_);
- }
- if(this.debug && stage.stageWidth > 20 && stage.stageHeight > 20)
- {
- this.txLog.width = stage.stageWidth - 10;
- this.txLog.height = stage.stageHeight - 10;
- }
- }
-
- private function resizeEntity(param1:Sprite, param2:Number, param3:Number, param4:Number, param5:Number) : void
- {
- param1.x = param2;
- param1.y = param3;
- param1.width = param4;
- param1.height = param5;
- }
-
- private function clickHandler(param1:MouseEvent) : void
- {
- if(this.isMp3)
- {
- this.jPlayerFlashEvent(new JplayerEvent(JplayerEvent.JPLAYER_CLICK,this.myMp3Player.myStatus,"click"));
- }
- else
- {
- this.jPlayerFlashEvent(new JplayerEvent(JplayerEvent.JPLAYER_CLICK,this.myMp4Player.myStatus,"click"));
- }
- }
-
- private function menuSelectHandler_jPlayer(param1:ContextMenuEvent) : void
- {
- navigateToURL(new URLRequest("http://jplayer.org/"),"_blank");
- }
-
- private function menuSelectHandler_happyworm(param1:ContextMenuEvent) : void
- {
- navigateToURL(new URLRequest("http://happyworm.com/"),"_blank");
- }
-
- private function log(param1:String) : void
- {
- if(this.debug)
- {
- this.txLog.text = param1 + "\n" + this.txLog.text;
- }
- }
-
- private function debugMsgHandler(param1:JplayerEvent) : void
- {
- this.log(param1.msg);
- }
-
- private function keyboardHandler(param1:KeyboardEvent) : void
- {
- this.log("keyboardHandler: e.keyCode = " + param1.keyCode);
- switch(param1.keyCode)
- {
- case 68:
- this.txLog.visible = !this.txLog.visible;
- this.log("Toggled log display: " + this.txLog.visible);
- break;
- case 76:
- if(param1.ctrlKey && param1.shiftKey)
- {
- this.txLog.text = "Cleared log.";
- }
- }
- }
- }
- }
-
-